package com.woparker.kiosk.view;

import android.annotation.SuppressLint;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.woparker.kiosk.R;
import com.woparker.kiosk.utils.CommonUtils;

public class PlateKey extends LinearLayout implements View.OnClickListener {

    private OnBackClickListener onBackClickListener;
    public View mHeader;
    private TextView tv;
    private String key = "";
    private int inputType = 0;

    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }

    public OnBackClickListener getOnBackClickListener() {
        return onBackClickListener;
    }

    public void setOnBackClickListener(OnBackClickListener onBackClickListener) {
        this.onBackClickListener = onBackClickListener;
    }

    //是否采用新的查询方式
    private boolean isNewQuery = true;

    public boolean isNewQuery() {
        return isNewQuery;
    }

    private TextView textView;
    private OnKeyClickListener onKeyClickListener;

    public OnKeyClickListener getOnKeyClickListener() {
        return onKeyClickListener;
    }

    public void setOnKeyClickListener(OnKeyClickListener onKeyClickListener) {
        this.onKeyClickListener = onKeyClickListener;
    }

    public PlateKey(Context context, AttributeSet attrs) {
        super(context, attrs);
        LayoutInflater inflater = LayoutInflater.from(context);
        mHeader = inflater.inflate(R.layout.view_keyboard, this);
        setViewsClickListener();
    }

    public void setViewsClickListener() {
        setViewClck(R.id.num_backspace);
        setViewClck(R.id.num0);
        setViewClck(R.id.num1);
        setViewClck(R.id.num2);
        setViewClck(R.id.num3);
        setViewClck(R.id.num4);
        setViewClck(R.id.num5);
        setViewClck(R.id.num6);
        setViewClck(R.id.num7);
        setViewClck(R.id.num8);
        setViewClck(R.id.num9);
        setViewClck(R.id.numQ);
        setViewClck(R.id.numW);
        setViewClck(R.id.numE);
        setViewClck(R.id.numR);
        setViewClck(R.id.numT);
        setViewClck(R.id.numY);
        setViewClck(R.id.numU);
        setViewClck(R.id.numI);
        setViewClck(R.id.numO);
        setViewClck(R.id.numP);
        setViewClck(R.id.numA);
        setViewClck(R.id.numS);
        setViewClck(R.id.numD);
        setViewClck(R.id.numF);
        setViewClck(R.id.numG);
        setViewClck(R.id.numH);
        setViewClck(R.id.numJ);
        setViewClck(R.id.numK);
        setViewClck(R.id.numL);
        setViewClck(R.id.numZ);
        setViewClck(R.id.numX);
        setViewClck(R.id.numC);
        setViewClck(R.id.numV);
        setViewClck(R.id.numB);
        setViewClck(R.id.numN);
        setViewClck(R.id.numM);
    }

    public void setViewClck(int viewId) {
        mHeader.findViewById(viewId).setOnClickListener(this);
    }

    public void setInputType(int inputType) {
        this.inputType = inputType;
    }


    //新查询方式文本框
    public void setTextView(TextView textView) {
        this.textView = textView;
    }

    //旧的查询方式键盘框
    public void setKeyboardView() {
        setKey("");
        plateEditView(tv);
    }


    public void plateEditView(TextView tv) {
        this.tv = tv;
    }

    @Override
    public void onClick(View v) {
        key = "";
        if (v.getId() == R.id.num_backspace) {
            if (isNewQuery) {
                key = CommonUtils.backspaceTool(key);
                setPlates(true, "8");
            } else {
                key = CommonUtils.backspaceTool(key);
                if (inputType == 0) {
                    if (tv != null)
                        tv.setText("");
                } else {
                    if (textView != null)
                        textView.setText("");
                }
            }
        } else if (v.getId() == R.id.num0) {
            setPlates(false, "0");
        } else if (v.getId() == R.id.num1) {
            setPlates(false, "1");
        } else if (v.getId() == R.id.num2) {
            setPlates(false, "2");
        } else if (v.getId() == R.id.num3) {
            setPlates(false, "3");
        } else if (v.getId() == R.id.num4) {
            setPlates(false, "4");
        } else if (v.getId() == R.id.num5) {
            setPlates(false, "5");
        } else if (v.getId() == R.id.num6) {
            setPlates(false, "6");
        } else if (v.getId() == R.id.num7) {
            setPlates(false, "7");
        } else if (v.getId() == R.id.num8) {
            setPlates(false, "8");
        } else if (v.getId() == R.id.num9) {
            setPlates(false, "9");
        } else if (v.getId() == R.id.numQ) {
            setPlates(false, "Q");
        } else if (v.getId() == R.id.numW) {
            setPlates(false, "W");
        } else if (v.getId() == R.id.numE) {
            setPlates(false, "E");
        } else if (v.getId() == R.id.numR) {
            setPlates(false, "R");
        } else if (v.getId() == R.id.numT) {
            setPlates(false, "T");
        } else if (v.getId() == R.id.numY) {
            setPlates(false, "Y");
        } else if (v.getId() == R.id.numU) {
            setPlates(false, "U");
        } else if (v.getId() == R.id.numI) {
            setPlates(false, "I");
        } else if (v.getId() == R.id.numO) {
            setPlates(false, "O");
        } else if (v.getId() == R.id.numP) {
            setPlates(false, "P");
        } else if (v.getId() == R.id.numA) {
            setPlates(false, "A");
        } else if (v.getId() == R.id.numS) {
            setPlates(false, "S");
        } else if (v.getId() == R.id.numD) {
            setPlates(false, "D");
        } else if (v.getId() == R.id.numF) {
            setPlates(false, "F");
        } else if (v.getId() == R.id.numG) {
            setPlates(false, "G");
        } else if (v.getId() == R.id.numH) {
            setPlates(false, "H");
        } else if (v.getId() == R.id.numJ) {
            setPlates(false, "J");
        } else if (v.getId() == R.id.numK) {
            setPlates(false, "K");
        } else if (v.getId() == R.id.numL) {
            setPlates(false, "L");
        } else if (v.getId() == R.id.numZ) {
            setPlates(false, "Z");
        } else if (v.getId() == R.id.numX) {
            setPlates(false, "X");
        } else if (v.getId() == R.id.numC) {
            setPlates(false, "C");
        } else if (v.getId() == R.id.numV) {
            setPlates(false, "V");
        } else if (v.getId() == R.id.numB) {
            setPlates(false, "B");
        } else if (v.getId() == R.id.numN) {
            setPlates(false, "N");
        } else if (v.getId() == R.id.numM) {
            setPlates(false, "M");
        } else {
            throw new IllegalStateException("Unexpected value: " + v.getId());
        }

    }


    private void setPlates(boolean isBack, String plate) {
        if (isNewQuery()) {
            if (null != onKeyClickListener) {
                onKeyClickListener.onClick(isBack, plate);
            }
        } else {
            if (inputType == 0) {
                tv.setText(plate);
            } else {
                textView.setText(plate);
            }
        }

    }


    public interface OnKeyClickListener {
        void onClick(boolean isBack, String str);
    }


    public interface OnBackClickListener {
        void onBack();
    }
}
